﻿Public Class CtlPersonel

	Public Personel As Integer

	Dim Yillik As Boolean
	Dim Hareketler As List(Of IzinBilgisi)
	Dim TalepListesi As List(Of TalepBilgisi)
	Public Icon As Image

	Dim Popup1 As New ContextMenuStrip

	Sub New(ByVal Kod As Integer)
		InitializeComponent()
		ToolBar.Parent = Nothing
		ToolBar.Renderer = New FirefoxRenderer
		BtnHelp.DropDown = HelpMenu
		BtnIzin.Image = BtnIzin.Image.Resize(16, 16)
		BtnDelete.Image = BtnDelete.Image.Resize(16, 16)
		MnuPersonel.Image = MnuPersonel.Image.Resize(16, 16)
		BtnYil.Image = BtnYil.Image.Resize(16, 16)
		BtnHelp.Image = BtnHelp.Image.Resize(16, 16)
		BtnTalep.Image = BtnTalep.Image.Resize(16, 16)
		BtnSaat.Image = BtnSaat.Image.Resize(16, 16)
		MnuIzinI.Image = FrmIzin.GetImage("I", 16, 16)
		MnuIzinH.Image = FrmIzin.GetImage("H", 16, 16)
		MnuIzinM.Image = FrmIzin.GetImage("M", 16, 16)
		MnuIzinO.Image = FrmIzin.GetImage("O", 16, 16)
		MnuIzinS.Image = FrmIzin.GetImage("S", 16, 16)
		MnuIzinP.Image = FrmIzin.GetImage("P", 16, 16)
		MnuIzin2I.Image = MnuIzinI.Image
		MnuIzin2H.Image = MnuIzinH.Image
		MnuIzin2M.Image = MnuIzinM.Image
		MnuIzin2S.Image = MnuIzinS.Image
		MnuIzin2P.Image = MnuIzinP.Image
		MnuIzin.Image = BtnIzin.Image
		MnuSaat.Image = BtnSaat.Image
		List.CellBorderStyle = DataGridViewCellBorderStyle.Single
		'List.GridColor = Color.Transparent
		List.DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255)
		List.DefaultCellStyle.SelectionBackColor = Color.FromArgb(192, 208, 224)
		List.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
		List.AddColumn("islem", "Açıklama", "120", "l")
		List.AddColumn("tarih", "Tarih", "85", "c")
		List.AddColumn("aygun", "Ay(Gün)", "50", "c")
		List.AddColumn("hakgun", "Ay(Gün)", "50", "c")
		List.AddColumn("statu", "Statü", "40", "c")
		List.AddColumn("kazanilan", "Kazan.", "40", "c")
		List.AddColumn("varolan", "Varolan", "40", "c")
		List.AddColumn("toplam", "Top.", "40", "c")
		List.AddColumn("ytarih", "Tarih 1", "85", "c")
		List.AddColumn("yilgun", "Kull.", "35", "c")
		List.AddColumn("yiltop", "Yıllık", "35", "c")
		List.AddColumn("yilkal", "Kalan", "35", "c")
		List.AddColumn("htarih", "Tarih 1", "85", "c")
		List.AddColumn("hasgun", "H.İ", "35", "c")
		List.AddColumn("hastop", "H.İ.T", "35", "c")
		List.AddColumn("haskal", "H.İ.K", "35", "c")
		List.AddColumn("mtarih", "Tarih 1", "85", "c")
		List.AddColumn("mazgun", "M.İ", "35", "c")
		List.AddColumn("maztop", "M.İ.T", "35", "c")
		List.AddColumn("mazkal", "M.İ.K", "35", "c")

		List.Columns("aygun").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		List.Columns("islem").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		List.Columns("toplam").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		List.Columns("yilkal").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		List.Columns("haskal").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		List.Columns("mazkal").DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)

		Popup1.Items.Add(MnuEdit.Clone)
		Popup1.Items.Add(MnuDelete.Clone)
		Popup1.Items.Add(MnuPrintDilekce.Clone)
		Popup1.Items.Add("-")
		Popup1.Items.Add(MnuIzin.Clone)
		Popup1.Items.Add("-")
		Popup1.Items.Add(MnuPersonel.Clone)
		'List2.AddColumn("tarih", "Tarih", "70", "d")
		'List2.AddColumn("islem", "İşlem", "150", "l")
		'List2.AddColumn("aciklama", "Açıklaması", "100%", "l")
		'List2.AddColumn("sure", "Süre", "70", "r")
		'List2.AddColumn("birikmis", "Birikmiş", "70", "r")
		Me.Personel = Kod
		If Not Kullanici.Operator Then
			MnuPersonel.Enabled = False
			MnuEdit.Enabled = False
			MnuDelete.Enabled = False
			BtnDelete.Enabled = False
			MnuIzin.Enabled = False
			BtnIzin.Enabled = False
		End If
		If Kullanici.Kod = Kod Then
			MnuResetPassword.Text = "Parola değiştir"
		End If
		BtnTalep.Visible = Not Kullanici.Operator And Not Kullanici.Yonetici
		BtnIzin.Visible = Kullanici.Operator
		Reload()
	End Sub

	Sub Reload()
		Dim P = Service.Personel.Oku(Me.Personel)
		Me.Text = P.AdiSoyadi
		Icon = If(P.Cinsiyet = "E", My.Resources.man, My.Resources.woman)
		Hareketler = Service.Izin.Hesapla(Personel).ToList
		BtnYil.Text = "(Yıl)"
		BtnYil.Enabled = False
		BtnYil.DropDownItems.Clear()
		InfoBox.Reset()
		If Hareketler.Count = 0 Then
			If Kullanici.Operator Then
				InfoBox.ShowMessage("!", "Personelin izin hesaplanmasına esas başlangıç bilgileri sistemde bulunmamaktadır.", "Bilgilerini gir")
				InfoBox.Bind(0, AddressOf MnuPersonel.PerformClick)
			ElseIf Kullanici.Kod = Personel Then
				InfoBox.ShowMessage("!", "İzin hesaplanmasına esas başlangıç bilgileriniz sistemde bulunmamaktadır. Lütfen yetkili kişilere başvurun.")
			Else
				InfoBox.ShowMessage("!", "Personelin izin hesaplanmasına esas başlangıç bilgileri sistemde bulunmamaktadır. Lütfen yetkili kişilere başvurun.")
			End If
		End If
		For Each Item In (From h In Hareketler Select h.Yil).Distinct
			Dim Menu As New ToolStripMenuItem
			Menu.Text = Item
			Menu.Name = Trim(Item)
			BtnYil.DropDownItems.Add(Menu)
		Next
		BtnYil.Enabled = BtnYil.DropDownItems.Count > 0
		If BtnYil.Enabled Then
			If BtnYil.DropDownItems.ContainsKey(Trim(Today.Year)) Then
				BtnYil.DropDownItems(Trim(Today.Year)).PerformClick()
			Else
				BtnYil.DropDownItems(BtnYil.DropDownItems.Count - 1).PerformClick()
			End If
		End If
		TalepListesi = Service.Talep.Talepler(Personel).ToList
		TalepBox.Reset()
		If TalepListesi.Count > 0 Then
			If Kullanici.Kod = Personel Then
				If TalepListesi(0).Durum = "0" Then
					TalepBox.ShowMessage("i", "İzin talebiniz değerlendirilmeyi beklemektedir.", "Detaylar|İptal et")
					TalepBox.Bind(0, AddressOf TalepDetayi)
					TalepBox.Bind(1, AddressOf TalepIptali)
				ElseIf TalepListesi(0).Durum = "1" Then
					TalepBox.ShowMessage("i", "İzin talebiniz onaylanmıştır. Sisteme işlenmeyi beklemektedir.", "Detaylar")
					TalepBox.Bind(0, AddressOf TalepDetayi)
				End If
			ElseIf Kullanici.Yonetici Then
				If TalepListesi(0).Durum = "0" Then
					With TalepListesi(0)
						TalepBox.ShowMessage("i", "Personelin " & .Tarih1.DMY & " - " & .Tarih2.DMY & " tarihleri arasında izin talebi vardır.", "Görüntüle|Onayla|Reddet")
					End With
					TalepBox.Bind(0, AddressOf TalepDetayi)
					TalepBox.Bind(1, AddressOf TalepOnayi)
					TalepBox.Bind(2, AddressOf TalepReddi)
				ElseIf TalepListesi(0).Durum = "1" Then
					TalepBox.ShowMessage("i", "Personelin izin talebi onaylanmıştır. Sisteme işlenmeyi beklemektedir.", "Detaylar")
					TalepBox.Bind(0, AddressOf TalepDetayi)
				End If
			ElseIf Kullanici.Operator Then
				If TalepListesi(0).Durum = "0" Then
					TalepBox.ShowMessage("i", "Personelin izin talebi değerlendirilmeyi beklemektedir.", "Görüntüle")
					TalepBox.Bind(0, AddressOf TalepDetayi)
				ElseIf TalepListesi(0).Durum = "1" Then
					TalepBox.ShowMessage("i", "Personelin izin talebi onaylanmıştır. Sisteme işlenmeyi beklemektedir.", "Sisteme işle")
					TalepBox.Bind(0, AddressOf SistemeIsle)
				End If
			End If
		End If
	End Sub

	Function TalepIptali() As Boolean
		If Not Confirm("İzin talebini iptal etmek istediğinizden emin misiniz?") Then Exit Function
		Service.Talep.IptalEt(Personel, Kullanici.Kod)
		Reload()
		Return True
	End Function

	Sub TalepOnayi()
		If Not Confirm("İzin talebini onaylamak istediğinizden emin misiniz?") Then Exit Sub
		Service.Talep.Onayla(Personel, Kullanici.Kod)
		Reload()
	End Sub

	Sub SistemeIsle()
		Service.Talep.Isle(Personel, Kullanici.Kod)
		Reload()
	End Sub

	Sub TalepReddi()

	End Sub

	Sub TalepDetayi()
		Dim Form As New FrmIzin(5)
		Form.SetPersonel(Personel)
		Form.Caller = Me
		Form.Tarih1.Value = TalepListesi(0).Tarih1
		Form.Tarih2.Value = TalepListesi(0).Tarih2
		Form.Tarih1.Enabled = False
		Form.Tarih2.Enabled = False
		Form.Button1.Enabled = False
		Form.Button3.Visible = True
		Form.Show()
	End Sub

	Sub HighlightRow(ByVal Row As DataGridViewRow)
		Row.DefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240)
		Row.DefaultCellStyle.ForeColor = Color.Black
		'Row.DefaultCellStyle.SelectionBackColor = Color.FromArgb(144, 160, 192)
		'Row.DefaultCellStyle.SelectionForeColor = Color.Black
	End Sub

	Private Sub BtnIzin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIzin.Click
		If BtnIzin.DropDownButtonPressed Then Exit Sub
		Dim Form As New FrmIzin("I")
		Form.SetPersonel(Personel)
		Form.Caller = Me
		Form.Show()
	End Sub

	Private Sub BtnTalep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTalep.Click
		If TalepListesi.Count > 0 Then
			Warning("Şu anda bir izin talebiniz zaten mevcut.")
			Exit Sub
		End If
		Dim Form As New FrmIzin("B")
		Form.SetPersonel(Personel)
		Form.Caller = Me
		Form.Show()
	End Sub

	Shared Function Edit(ByVal Kod As Integer) As Boolean
		Dim Form As New FrmKart
		Form.Open(Kod)
		Return Form.ShowDialog = Windows.Forms.DialogResult.OK
	End Function

	Private Sub MnuPersonel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuPersonel.Click
		If Not Edit(Personel) Then Exit Sub
		Reload()
	End Sub

	Private Sub BtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDelete.Click, MnuDelete.Click
		If List.SelectedRows.Count = 0 Then Exit Sub
		If Val(List.SelectedRows(0).Tag) = 0 Then Warning("Bu kaydı silemezsiniz.") : Exit Sub
		If Not Confirm("Seçilmiş olan izin kaydının silinmesini istediğinizden emin misiniz?") Then Exit Sub
		Service.Izin.Sil(List.SelectedRows(0).Tag, Kullanici.Kod)
		Reload()
	End Sub

	Private Sub MnuClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuClose.Click
		CType(FindForm(), FrmMain).CloseTab()
	End Sub

	Private Sub MnuResetPassword_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuResetPassword.Click
		Dim Msg As String = "Bu personelin parolasını sıfırlamak istediğinizden emin misiniz?"
		If Kullanici.Kod = Personel Then Msg = "Parolanızı değiştirmek istediğinizden emin misiniz?"
		If Not Confirm(Msg) Then Exit Sub
		Kullanici.SifreSifirla(Personel)
		Msg = "Parola sıfırlanmıştır. Personelin sisteme bir sonraki girişinde yeni parolası sorulacaktır."
		If Kullanici.Kod = Personel Then Msg = "Parolanız sıfırlanmıştır. Sisteme bir sonraki girişinizde yeni parolanız sorulacaktır."
		Info(Msg)
	End Sub

	Private Sub BtnIzin_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles BtnIzin.DropDownItemClicked, MnuIzin.DropDownItemClicked
		Dim Form As New FrmIzin(Strings.Right(e.ClickedItem.Name, 1))
		Form.SetPersonel(Personel)
		Form.Caller = Me
		Form.Show()
	End Sub

	Sub PaintHeader(ByVal G As Graphics, ByVal Rect As Rectangle, ByVal Col As Integer, ByVal Title As String, ByVal ParamArray Titles() As String)
		Dim R As Rectangle
		R = Rect
		R.Height \= 2
		R.Offset(0, R.Height)
		R.Height -= 1
		For i As Integer = 0 To UBound(Titles)
			R.Width = List.Columns(Col + i).Width
			G.FillRectangle(HeaderColor.Brush, R)
			TextRenderer.DrawText(G, Titles(i), List.Font, R, Color.Black, Color.Transparent, TextFormatFlags.HorizontalCenter + TextFormatFlags.VerticalCenter)
			G.DrawLine(Color.Black.Opacity(32).Pen, R.Left, R.Top, R.Right, R.Top)
			G.DrawLine(Color.Black.Opacity(If(i < UBound(Titles), 32, 128)).Pen, R.Right - 1, R.Top, R.Right - 1, R.Bottom - 1)
			R.Offset(R.Width, 0)
		Next
		Dim x As Integer = R.Left
		R = Rect
		If UBound(Titles) >= 0 Then
			R.Width = x - R.Left
			R.Height \= 2
		Else
			R.Height -= 1
		End If
		G.FillRectangle(New SolidBrush(HeaderColor), R)
		G.DrawLine(Color.Black.Opacity(128).Pen, R.Left, R.Top, R.Right, R.Top)
		G.DrawLine(Color.Black.Opacity(128).Pen, R.Right - 1, R.Top, R.Right - 1, R.Bottom - 1)
		TextRenderer.DrawText(G, Title, List.Font, R, Color.Black, Color.Transparent, TextFormatFlags.HorizontalCenter + TextFormatFlags.VerticalCenter)
	End Sub

	Private Sub List_Activate(ByVal sender As Object, ByVal e As System.EventArgs) Handles List.Activate
		If MnuEdit.Enabled Then MnuEdit.PerformClick()
	End Sub

	Private Sub List1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles List.CellPainting
		Dim R As Rectangle = e.CellBounds
		R.Width -= 1 : R.Height -= 1
		If e.RowIndex = -1 Then
			Select Case e.ColumnIndex
				Case 0 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Açıklama")
				Case 1 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Hizmet Süresi", "Tarih aralığı", "Ay-gün")
				Case 3 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Hakedilen İzin Günleri", "Ay-gün", "Statü", "Kazan.", "Olan", "Top.")
				Case 8 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Yıllık İzin", "Tarih aralığı", "Gün", "Top.", "Kalan")
				Case 12 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Hastalık İzni", "Tarih aralığı", "Gün", "Top.", "Kalan")
				Case 16 : PaintHeader(e.Graphics, e.CellBounds, e.ColumnIndex, "Mazaret İzni", "Tarih aralığı", "Gün", "Top.", "Kalan")
			End Select
		Else
			e.PaintBackground(e.ClipBounds, False)	'  List.Rows(e.RowIndex).Selected)
			e.PaintContent(e.ClipBounds)
			Select Case e.ColumnIndex
				Case 0, 2, 7, 11, 15
					e.Graphics.DrawLine(Color.Black.Opacity(128).Pen, R.Right, R.Top, R.Right, R.Bottom - 1)
				Case Else
					e.Graphics.DrawLine(Color.Black.Opacity(32).Pen, R.Right, R.Top, R.Right, R.Bottom - 1)
			End Select
			Dim Tag = List.Rows(e.RowIndex).Cells(e.ColumnIndex).Tag
			If Tag <> "" Then
				Dim RR = R
				RR.Width = RR.Height * 1.5
				RR.Offset(R.Width - RR.Width, 0)
				RR.Inflate(-1, -1)
				e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
				e.Graphics.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
				e.Graphics.FillRoundRect(Color.Black.Opacity(96).Brush, RR, 4)
				e.Graphics.DrawText(Tag.ToString, e.CellStyle.Font, RR, Color.White, "")
				e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.None
				e.Graphics.PixelOffsetMode = Drawing2D.PixelOffsetMode.None
			End If
		End If
		e.Graphics.DrawLine(Color.Black.Opacity(128).Pen, R.Left, R.Bottom, R.Right, R.Bottom)
		R.Width += 1 : R.Height += 1
		Select Case e.ColumnIndex
			Case 16, 17, 18, 19
				e.Graphics.FillRectangle(Color.Orange.Opacity(32).Brush, R)
			Case 12, 13, 14, 15
				e.Graphics.FillRectangle(Color.Red.Opacity(32).Brush, R)
			Case 8, 9, 10, 11
				e.Graphics.FillRectangle(Color.Blue.Opacity(32).Brush, R)
		End Select
		If (e.State And DataGridViewElementStates.Selected) > 0 Then
			e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.None
			e.Graphics.FillRectangle(Color.Black.Opacity(32).Brush, R)
			e.Graphics.FillRectangle(Color.Blue.Opacity(32).Brush, R)
		End If
		If e.CellStyle.ForeColor = Color.Red And e.ColumnIndex = 0 Then
			R.Width = R.Height
			R.Offset(e.CellBounds.Width - R.Width, 0)
			R.Inflate(-2, -2)
			e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
			e.Graphics.DrawImage(SystemIcons.Exclamation.ToBitmap, R)
		End If
		e.Handled = True
	End Sub

	Private Sub BtnYil_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles BtnYil.DropDownItemClicked
		Calendar.Year = e.ClickedItem.Text
		List.Rows.Clear()
		BtnYil.Text = e.ClickedItem.Text
		BtnYil.ToolTipText = ""
		MnuPrevYear.Enabled = Not e.ClickedItem Is BtnYil.DropDownItems(0)
		MnuNextYear.Enabled = Not e.ClickedItem Is BtnYil.DropDownItems(BtnYil.DropDownItems.Count - 1)
		InfoBox.Reset()
		For Each Info As IzinBilgisi In From h In Hareketler Where h.Yil = e.ClickedItem.Text
			List.Rows.Add()
			Dim Row As DataGridViewRow = List.Rows(List.Rows.Count - 1)
			Row.Tag = Info.Kod
			Row.Cells("islem").Value = Info.Islem
			If Info.GunHesabi Then
				If Info.Statu <> "IP" Then
					Row.Cells("tarih").Value = Mid(Info.KazTarihAraligi, 1, 5) & " - " & Mid(Info.KazTarihAraligi, 10, 5)
					Row.Cells("aygun").Value = Info.GecenSure.Ay & " - " & Format(Info.GecenSure.Gun, "00")
					Row.Cells("hakgun").Value = Info.Hakedilen.Ay & " - " & Format(Info.Hakedilen.Gun, "00")
				End If
				Row.Cells("varolan").Value = If(Info.Normal.Varolan = 0, "", Info.Normal.Varolan.ToString("##0.0"))
				Row.Cells("statu").Value = Info.GecerliStatu
				Row.Cells("kazanilan").Value = If(Info.Normal.Kazanilan = 0, "", Info.Normal.Kazanilan.ToString("##0.0"))
				Row.Cells("toplam").Value = Info.Normal.Toplam
				Row.Cells("yilkal").Value = Info.Normal.Kalan
			End If
			If Info.Tur = "ilk" Then
				If Info.YeniKayit Then
					Row.Cells("islem").Value = "İşe başlama"
					Row.Cells("tarih").Value = Info.BaslamaTarihi.DMY
				Else
					Row.Cells("islem").Value = "Yıl açılışı"
					Row.Cells("hakgun").Value = "0 - " & Format(Info.Hakedilen.Gun, "00")
				End If
				Row.Cells("yilkal").Value = Info.Normal.Kalan
				Row.Cells("haskal").Value = Info.Hastalik.Kalan
				Row.Cells("mazkal").Value = Info.Mazaret.Kalan
				HighlightRow(Row)
			ElseIf Info.Tur = "yilbasi" Then
				HighlightRow(Row)
				Row.Cells("hakgun").Value = "0 - " & Format(Info.Hakedilen.Gun, "00")
				Row.Cells("haskal").Value = Info.Hastalik.Kalan
				Row.Cells("yilkal").Value = Info.Normal.Kalan
				Row.Cells("mazkal").Value = Info.Mazaret.Kalan
			ElseIf Info.Tur = "yilsonu" Then
				HighlightRow(Row)
				Row.Cells("haskal").Value = Info.Hastalik.Kalan
				Row.Cells("yilkal").Value = Info.Normal.Kalan
				Row.Cells("mazkal").Value = Info.Mazaret.Kalan
			ElseIf Info.Tur = "bugun" Then
				HighlightRow(Row)
				Row.Cells("haskal").Value = Info.Hastalik.Kalan
				Row.Cells("yilkal").Value = Info.Normal.Kalan
				Row.Cells("mazkal").Value = Info.Mazaret.Kalan
			ElseIf Info.Tur = "yillik" Then
				Row.Cells("ytarih").Value = Mid(Info.TarihAraligi, 1, 5) & " - " & Mid(Info.TarihAraligi, 10, 5)
				Row.Cells("yilgun").Value = Info.Normal.Kullanilan
				Row.Cells("yiltop").Value = Info.Normal.YilToplami
				Row.Cells("yilkal").Value = Info.Normal.Kalan
				SetRowTooltip(Row,
				  "Personelin yıl zarfında alınan izin yekünü " & (Info.Normal.YilToplami - Info.Normal.Kullanilan) & " gündür.|" &
				  "Son izni takip eden hizmet süresi " & Info.GecenSure.Ay & " ay, " & Info.GecenSure.Gun & " gündür.|" &
				  "Yukardaki hizmet süresine mukabil kazanılan izin " & Info.Normal.Kazanilan & " gündür.|" &
				  "Kullanılan son izinden geriye kalan izin bakiyesi " & Info.Normal.Varolan & " gündür.||" &
				  "Toplam izin: " & Info.Normal.Toplam & "|" &
				  "İstenen izin: " & Info.Normal.Kullanilan & "|" &
				  "Geriye kalan izin: " & Info.Normal.Kalan)
			ElseIf Info.Tur = "hastalik" Then
				Row.Cells("htarih").Value = Mid(Info.TarihAraligi, 1, 5) & " - " & Mid(Info.TarihAraligi, 10, 5)
				Row.Cells("hasgun").Value = Info.Hastalik.Kullanilan
				Row.Cells("hastop").Value = Info.Hastalik.YilToplami
				Row.Cells("haskal").Value = Info.Hastalik.Kalan
			ElseIf Info.Tur = "mazaret" Then
				Row.Cells("mtarih").Value = Mid(Info.TarihAraligi, 1, 5) & " - " & Mid(Info.TarihAraligi, 10, 5)
				Row.Cells("mazgun").Value = Info.Mazaret.Kullanilan
				Row.Cells("maztop").Value = Info.Mazaret.YilToplami
				Row.Cells("mazkal").Value = Info.Mazaret.Kalan
			ElseIf Info.Tur = "ozelmazaret" Then
				Row.Cells("mtarih").Value = Mid(Info.TarihAraligi, 1, 5) & " - " & Mid(Info.TarihAraligi, 10, 5)
				Row.Cells("mazgun").Value = Info.Mazaret.Kullanilan
			ElseIf Info.Tur = "saattoplam" Then
				Row.Cells("yilgun").Value = Info.Normal.Kullanilan
				Row.Cells("yiltop").Value = Info.Normal.YilToplami
				Row.Cells("yilkal").Value = Info.Normal.Kalan
			ElseIf Info.Tur = "saatyil" Then
				Row.Cells("yilgun").Value = Info.Normal.Kullanilan
				Row.Cells("yiltop").Value = Info.Normal.YilToplami
				Row.Cells("yilkal").Value = Info.Normal.Kalan
			End If
			Row.Cells(0).Value = ToTitle(Row.Cells(0).Value)
			If Info.EvrakNo <> "" Then
				'Row.Cells(0).Value &= " (" & Info.EvrakNo & ")"
				Row.Cells(0).Tag = Info.EvrakNo
			End If
			If Info.Draft Then
				Row.DefaultCellStyle.ForeColor = Color.Blue
				Row.DefaultCellStyle.SelectionForeColor = Color.Blue
				Row.Cells("islem").Value = "Yıllık izin talebi"
			End If
			Dim Sorunlu = Service.Sorunlu.Personel(Personel)
			If Sorunlu.Count > 0 Then
				InfoBox.ShowMessage("!", "Tarihlerin içiçe olduğu kayıtlar vardır. Lütfen kırmızı satırlardaki kayıtları gözden geçirin.")
				For Each res In From s In Sorunlu From r As DataGridViewRow In List.Rows Where r.Tag = s
					res.r.DefaultCellStyle.ForeColor = Color.Red
					res.r.DefaultCellStyle.SelectionForeColor = Color.Red
				Next
			End If
			'Row.Cells(0).Style.BackColor = Color.FromArgb(64, 64, 64)
			'Row.Cells(0).Style.ForeColor = Color.FromArgb(255, 255, 255)
			'Row.Cells(0).Style.SelectionBackColor = Color.FromArgb(0, 0, 0)
			'Row.Cells(0).Style.SelectionForeColor = Color.FromArgb(255, 255, 255)
		Next
		Calendar.SpecialDays.Clear()
		For Each h In Service.Izin.Liste(Personel, e.ClickedItem.Text)
			Dim d = h.Tarih1
			Do Until d > h.Tarih2
				If Not Calendar.SpecialDays.ContainsKey(d) Then
					If TypeOf h Is HareketYillikIzin Then
						Calendar.SpecialDays.Add(d, "i")
					ElseIf TypeOf h Is HareketHastalikIzni Then
						Calendar.SpecialDays.Add(d, "h")
					ElseIf TypeOf h Is HareketMazaretIzni Then
						Calendar.SpecialDays.Add(d, "m")
					End If
				End If
				d = d.AddDays(1)
			Loop
		Next
	End Sub

	Sub SetRowTooltip(ByVal Row As DataGridViewRow, ByVal Text As String)
		For Each Cell As DataGridViewCell In Row.Cells
			Cell.ToolTipText = Text.Replace("|", vbCrLf)
		Next
	End Sub
	Private Sub MnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuExit.Click
		FindForm.Close()
	End Sub

	Private Sub BtnSaat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaat.Click, MnuSaat.Click
		Dim Form As New FrmSaat(Personel)
		Form.ShowDialog()
	End Sub

	Private Sub List_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles List.MouseDown
		If (e.Button And Windows.Forms.MouseButtons.Right) > 0 And Kullanici.Operator Then
			Dim Test = List.HitTest(e.X, e.Y)
			If Test.RowIndex >= 0 Then
				List.ClearSelection()
				List.Rows(Test.RowIndex).Selected = True
				List.ContextMenuStrip = Popup1
			End If
		End If
	End Sub

	Private Sub MnuEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuEdit.Click
		If List.SelectedRows.Count <> 1 Then Exit Sub
		If Val(List.SelectedRows(0).Tag) = 0 Then Exit Sub
		Dim Form As New FrmIzin("I")
		Form.SetPersonel(Personel)
		Form.Open(List.SelectedRows(0).Tag)
		Form.Caller = Me
		Form.Show()
	End Sub

	Private Sub List_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles List.SizeChanged
		If List.Width = 0 Then Exit Sub
		List.Font = New Font("segoe ui", List.Width / 90, FontStyle.Regular, GraphicsUnit.Pixel)
		Dim FontSize = List.Font.Height * 1.6
		List.RowTemplate.Height = FontSize
		For Each Row As DataGridViewRow In List.Rows
			Row.Height = FontSize
		Next
		List.ColumnHeadersHeight = 2 * ((FontSize * 3) \ 2)
	End Sub

	Private Sub MnuView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuView1.Click
		List.Visible = True
		Calendar.Visible = False
	End Sub

	Private Sub MnuView2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuView2.Click
		List.Visible = False
		Calendar.Visible = True
		Service.Log("calendar", Personel, Kullanici.Kod)
	End Sub

	Private Sub BtnPrint_Click(sender As System.Object, e As System.EventArgs) Handles MnuPrintKart.Click, BtnPrintKart.Click
		Info("Yazdırma işlevi henüz hazırlanma aşamasındadır, şu anda kullanılamaz.")
	End Sub

	'Private Sub MnuPrint_Click(sender As Object, e As System.EventArgs) Handles MnuPrint.Click
	'	If List.SelectedRows.Count = 0 Then Return
	'	If Val(List.SelectedRows(0).Tag) = 0 Then Warning("Bu kayıt yazdırılabilecek bir kayıt değildir.") : Return
	'	Dim Info = (From h In Hareketler Where h.Kod = List.SelectedRows(0).Tag).First
	'	'Dim PrevInfo = (From h In Hareketler Where h.Tur = "yillik" And Hareketler.IndexOf(h) < Hareketler.IndexOf(Info) Order By Hareketler.IndexOf(h)).LastOrDefault
	'	Dim Form As New Form
	'	Dim Document As New Document
	'	Document.Clear()
	'	Document.AddSection()
	'	Document.AddTable("1l")
	'	Document.AddRow("<b>İZİN DİLEKÇESİ")
	'	Document.AddRow(" ")
	'	Dim P = Service.Personel.Oku(Me.Personel)
	'	Document.AddRow("İzin kullanan personel : " & P.AdiSoyadi)
	'	Document.AddRow("İzin kullanılan tarih : " & Info.TarihAraligi)
	'	Document.AddRow(" ")
	'	Document.AddRow("<b>Hizmet Süresi")
	'	Document.HasBorders = True
	'	Document.AddTable("4l;1r")
	'	Document.AddRow("Tarih aralığı", Info.KazTarihAraligi)
	'	Document.AddRow("Hizmet süresi", Info.GecenSure.Ay & " ay " & Info.GecenSure.Gun & " gün")
	'	Document.AddRow("Son izni alırken hesaplanmayan bakiye", Info.GunBakiyesi & " gün")
	'	Document.AddRow("Toplam hizmet süresi", Info.Hakedilen.Ay & " ay " & Info.Hakedilen.Gun & " gün")
	'	Document.HasBorders = False
	'	Document.AddTable("1l").AddRow(" ").AddRow("<b>Kazanılan İzin")
	'	Document.HasBorders = True
	'	Document.AddTable("4l;1r")
	'	Document.AddRow("Yukarıdaki hizmet süresine mukabil kazanılan izin", Info.Normal.Kazanilan & " gün")
	'	Document.AddRow("Kullanılan son izinden geriye kalan izin bakiyesi", Info.Normal.Varolan & " gün")
	'	Document.AddRow("Toplam izin", Info.Normal.Toplam & " gün")
	'	Document.HasBorders = False
	'	Document.AddTable("1l").AddRow(" ").AddRow("<b>Kullanılan İzin")
	'	Document.HasBorders = True
	'	Document.AddTable("4l;1r")
	'	Document.AddRow("Yıl zarfında alınan izin toplamı", (Info.Normal.YilToplami - Info.Normal.Kullanilan) & " gün")
	'	Document.AddRow("İstenen izin süresi", Info.Normal.Kullanilan & " gün")
	'	Document.AddRow("Yıl zarfında alınmış olacak izin toplamı", Info.Normal.YilToplami & " gün")
	'	Document.AddRow("Geriye kalan izin", Info.Normal.Kalan & " gün")
	'	Document.HasBorders = False
	'	Document.AddTable("3c;3c;3c")
	'	Document.AddRow(" ", "")
	'	Document.AddRow(" ", "")
	'	Document.AddRow(" ", "")
	'	Document.AddRow(" ", "")
	'	Document.AddRow("Personel Müdürü", "", "Hazırlayan")
	'	Document.Display()
	'	Form.Controls.Add(Document)
	'	Document.Dock = DockStyle.Fill
	'	Form.Size = New Size(640, 400)
	'	Form.Text = "İzin Bilgileri"
	'	Form.StartPosition = FormStartPosition.CenterScreen
	'	Form.ShowDialog()
	'End Sub

	Private Sub MnuPrint_Click(sender As Object, e As System.EventArgs) Handles MnuPrintDilekce.Click, BtnPrintDilekce.Click
		If List.SelectedRows.Count = 0 Then Return
		If Val(List.SelectedRows(0).Tag) = 0 Then Warning("Bu kayıt yazdırılabilecek bir kayıt değildir.") : Return
		Dim Info = (From h In Hareketler Where h.Kod = List.SelectedRows(0).Tag).First
		Dim PrevInfo = (From h In Hareketler Where h.Tur = "yillik" And Hareketler.IndexOf(h) < Hareketler.IndexOf(Info) Order By Hareketler.IndexOf(h)).LastOrDefault
		Dim Form As New Form
		Dim Document As New Document
		Dim P = Service.Personel.Oku(Me.Personel)
		Document.Clear()
		Document.AddSection()
		Document.AddTable("1c")
		Document.AddRow("<b>ÇALIŞMA VE SOSYAL GÜVENLİK BAKANLIĞI")
		Select Case P.Birim
			Case 2 : Document.AddRow("<b>SOSYAL SİGORTALAR DAİRESİ MÜDÜRLÜĞÜ")
			Case 3 : Document.AddRow("<b>ÇALIŞMA DAİRESİ MÜDÜRLÜĞÜ")
		End Select
		Document.AddRow("<b>İZİN DİLEKÇESİ")
		Document.Skip()
		Document.AddTable("1l;5l")
		Document.AddRow("Adı soyadı", ": " & P.AdiSoyadi)
		Document.AddRow("Kadro adı", ": " & StrDup(80, "."))
		Document.AddRow("Görev yeri", ": " & StrDup(80, "."))
		Document.AddRow("Hizmet süresi", ": 2 yıldan az / 2 yıldan fazla")
		Document.AddTable("1l")
		Document.Skip()
		Document.AddRow(StrDup(200, ".") & " maksadı ile bana " & Info.Tarih1.DMY & " tarihinden " & Info.Tarih2.DMY & " tarihine kadar " & Info.Normal.Kullanilan & " gün izin verilmesini rica ederim.")
		Document.AddRow("Dilekçem uygun görüldüğü takdirde iznimi ada dahilinde / haricinde geçirmeyi tasarlıyorum.")
		Document.AddRow("Adresim " & StrDup(160, ".") & " olacaktır.")
		Document.Skip()
		Document.AddRow("Tarih : " & StrDup(40, ".") & "      İmza : " & StrDup(40, ".") & "     Telefon : " & StrDup(40, "."))
		Document.Skip(2)
		Document.AddRow("İzin verilmesi uygundur. İzinli olduğu süre içinde görevini " & StrDup(100, ".") & " yürütecektir.")
		Document.Skip()
		Document.AddRow("Tarih : " & StrDup(40, ".") & "      Şube/Bölge amiri/Büro sorumlusu : " & StrDup(40, "."))
		Document.Skip(2)
		Document.AddRow("Yıl zarfında alınan izin yekünü " & (Info.Normal.YilToplami - Info.Normal.Kullanilan) & " gündür.")
		Document.AddRow("Personelin son izni " & Info.Tarih1.DMY & " tarihinden " & Info.Tarih2.DMY & " tarihine kadardır.")
		Document.AddRow("İzin hesaplanmasına hak kazandıran hizmet süresi " & Info.GecenSure.Ay & " ay " & Info.GecenSure.Gun & " gündür.")
		Document.AddRow("Son izni alırken hesaplanmayan bakiye " & Info.GunBakiyesi & " gündür. Toplam : " & Info.Hakedilen.Ay & " ay " & Info.Hakedilen.Gun & " gün")
		Document.Skip()
		Document.AddTable("3r;1r;3l")
		Document.AddRow("Hizmet süresine mukabil kazanılan izin :", Info.Normal.Kazanilan & " gün")
		Document.AddRow("Son izinden geriye kalan izin bakiye :", Info.Normal.Varolan & " gün")
		Document.AddRow("Toplam izin :", Info.Normal.Toplam & " gün")
		Document.AddRow("İstenen izin :", Info.Normal.Kullanilan & " gün")
		Document.AddRow("Geriye kalan izin :", Info.Normal.Kalan & " gün")
		Select Case P.Birim
			Case 3
				Document.AddTable("1l")
				Document.Skip(2)
				Document.AddRow("Dilekçe sahibinin izin istemi ve görevini yerine getirmesi ile ilgili öneri onaylanmıştır.")
				Document.Skip()
				Document.AddRow("Tarih : " & StrDup(40, ".") & "      Çalışma Dairesi Müdürü : " & StrDup(40, "."))
				Document.Skip(2)
				Document.AddRow("Dilekçe sahibinin izin istemi ve görevini yerine getirmesi ile ilgili öneri onaylanmıştır.")
				Document.Skip()
				Document.AddRow("Tarih : " & StrDup(40, ".") & "      Bakan : " & StrDup(40, "."))
		End Select
		Document.Display()
		Form.Controls.Add(Document)
		Document.Dock = DockStyle.Fill
		Form.Size = New Size(640, 400)
		Form.Text = "İzin Bilgileri"
		Form.StartPosition = FormStartPosition.CenterScreen
		Form.ShowDialog()
	End Sub

End Class